Amazon EKSがKubernetesバージョン1.18に対応しました!
「みんな大好き1.18がEKSに対応したよ!」
というわけで、EKSによるKubernetesのバージョン1.18への対応がアナウンスされました。すでにEKSのクラスターバージョン指定で、1.18が利用できるようになっています。
Amazon EKS now supports Kubernetes version 1.18
同時に既存のEKSクラスタバージョン1.14の、強制アップデートもアナウンスされています。もし手元に1.14がある方は、自動アップデートの前に対応必須ですので、気をつけましょう!
あの…噂の1.18が遂にきたか…!! ( ゚д゚) ガタッ / ヾ __L| / ̄ ̄ ̄/_ \/ /
なんか知ったふうやな。
Kubernetes version 1.18で変わったこと
最新公式情報はこちら。
Amazon EKS Kubernetes versions - Amazon EKS
ここでは、主にEKSクラスターでサポートされている機能について紹介します。
- Topology Managerのベータ対応
- サーバーサイドApplyのベータ対応
- Ingressへの設定仕様追加
- horizontal pod autoscalingの対応
- Podのトポロジースプレッドのベータステータス対応
その他、Kubernetes 1.18の公式アップデート情報はこちらを参照。
Kubernetes 1.18: Fit & Finish | Kubernetes
1.14のサポート終了に関する注意点
Amazon EKSのサポートは、最新の4バージョンに対して提供されます。1.18のサポートが提供開始されたことにより、サポートバージョンの一覧(2020年10月12日時点。)は以下となります。
参考:Amazon EKS Kubernetes versions - Amazon EKS
- 1.18.8
- 1.17.9
- 1.16.13
- 1.15.11
- 1.14.9
1.18のサポート開始に伴い、1.14は2020年12月8日にサポートが終了されます。この日以降は、新規で1.14のEKSクラスターを起動できなくなり、さらに既存の1.14クラスターは強制的に1.15にアップデートされます。古いクラスター稼働させている方は要チェックですぜ!
eksctlでバージョン1.18をデプロイしてみる
というわけで、新規でEKS上で1.18のクラスターを起動してみます。ここでは、みんな大好きeksctl
を使います。
クライアント環境はこちら。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.6 BuildVersion: 19G2021
eksctlの1.18対応バージョンのインストール
2020年10月12日現在、eksctlは、version1.18のクラスターに対応していないためRC版をダウンロードしてインストールします。
$ curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/0.30.0-rc.1/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp $ sudo mv /tmp/eksctl /usr/local/bin
バージョンを確認します。
$ eksctl version 0.30.0-rc.1
EKSクラスターの作成
パラメータは最小限にします。リージョンは東京、バージョンに1.18
を指定。
$ eksctl create cluster --region ap-northeast-1 --version 1.18 [ℹ] eksctl version 0.30.0-rc.1 [ℹ] using region ap-northeast-1 [ℹ] setting availability zones to [ap-northeast-1a ap-northeast-1c ap-northeast-1d] [ℹ] subnets for ap-northeast-1a - public:192.168.0.0/19 private:192.168.96.0/19 [ℹ] subnets for ap-northeast-1c - public:192.168.32.0/19 private:192.168.128.0/19 [ℹ] subnets for ap-northeast-1d - public:192.168.64.0/19 private:192.168.160.0/19 [ℹ] nodegroup "ng-6282565b" will use "ami-0e9f5606a6d10ffb1" [AmazonLinux2/1.18] [ℹ] using Kubernetes version 1.18 [ℹ] creating EKS cluster "fabulous-party-1602659703" in "ap-northeast-1" region with un-managed nodes 〜〜省略〜〜 [✔] EKS cluster "fabulous-party-1602659703" in "ap-northeast-1" region is ready
だいたい15分ほどかかりますが、これにてクラスターの作成完了です。
クラスターバージョンの確認
kubectl
で、クラスターのバージョンを確認します。
$ kubectl version --short Client Version: v1.17.2 Server Version: v1.18.8-eks-7c9bda
AWS CLIからも確認。
$ aws eks describe-cluster --name=fabulous-party-1602659703 | jq .cluster.version "1.18"
コンソール上でも、Kubernetes バージョンはこのように表示されます。
その他関連リソースについて
既存EKSクラスターのKubernetesバージョンの更新については、以下の公式ドキュメントにまとまっています。
Updating an Amazon EKS cluster Kubernetes version - Amazon EKS
各クラスターバージョンでサポートされているVPC CNI plug-inや、DNS(CoreDNS)、KubeProxyの情報なども全て網羅されているので、実際のアップグレードの際は、必ずこの公式ドキュメントを参照し、方針をたててから実行してみましょう。
KubernetesバージョンのアップグレードはEKS運用におけるキモ
以上、簡単に、EKSにおけるKubernetesバージョン1.18の対応について、その内容とアップグレード方法をまとめてみました。実際のアップグレード作業では、サービス中断を許容するか、クラスターによるB/Gデプロイで実施させるかなど、事前の検討必須事項は多々ありますが、バージョンアップによる新機能ももろもろ提供されているので、これを機会に手元のクラスターのアップグレード、実施いただければと思います。
それでは、今日はこのへんで。濱田(@hamako9999)でした。